【发布时间】:2020-06-05 01:34:30
【问题描述】:
我想将“大”自然数定义为大于 10 的自然数,将“小”自然数定义为小于 5 的自然数。我可以将这些定义表示为语言环境:
locale Big =
fixes k :: ‹nat›
assumes ‹k > 10›
locale Small =
fixes k :: ‹nat›
assumes ‹k < 5›
然后我可以证明 11 是大数,2 是小数:
interpretation Big ‹11 :: nat› by (unfold_locales, simp)
interpretation Small ‹2 :: nat› by (unfold_locales, simp)
但是我该如何表达和证明 7 不是小呢?我可以证明它不小于 5,但证明并不令人满意,因为它根本没有引用语言环境 Small:
lemma ‹¬ ((7 :: nat) < (5 :: nat))› by simp
此外,我如何表达不存在既大又小的整数?同样,我可以证明这一点,但只需要不参考语言环境:
lemma
fixes k :: nat
shows ‹¬ (k < 5 ∧ k > 10)›
by simp
一般来说,我如何证明某事不是对一个或多个语言环境的解释?还是我滥用了语言环境机制?
【问题讨论】:
标签: isabelle