Isabelle 要求澄清在涉及伊莎贝尔理论中自然数的理论中出现的表观实数强制
我正在伊莎贝尔2020/jEdit中研究以下理论:Isabelle 要求澄清在涉及伊莎贝尔理论中自然数的理论中出现的表观实数强制,isabelle,type-coercion,Isabelle,Type Coercion,我正在伊莎贝尔2020/jEdit中研究以下理论: theory Sqrt imports Complex_Main "HOL-Computational_Algebra.Primes" begin theorem assumes "prime (p::nat)" shows "sqrt p ∉ ℚ" proof from ‹prime p› have p: "1 < p" by (simp ad
theory Sqrt
imports Complex_Main "HOL-Computational_Algebra.Primes"
begin
theorem
assumes "prime (p::nat)"
shows "sqrt p ∉ ℚ"
proof
from ‹prime p› have p: "1 < p" by (simp add: prime_nat_iff)
assume "sqrt p ∈ ℚ"
then obtain m n :: nat where
n: "n ≠ 0" and sqrt_rat: "¦sqrt p¦ = m / n"
and "coprime m n" by (rule Rats_abs_nat_div_natE)
[we omit the remainder of the proof]
我的问题是:这些“真实”的表象是一种强迫吗?我已经阅读了第8章,讨论了Isabelle分布附带的所谓教程中的类型(标题为高阶逻辑的证明助手)。我阅读了Florian Haftman的文档标题Isabelle/HOL-type类层次结构(也是Isabelle发行版的一部分)。上述理论陈述中使用的规则,Rats\u abs\u nat\u div\u natE
,是Real.thy
理论中的一个引理
我在理论文件中找到了参考资料,并查看了证据中的§8.4.5
高阶逻辑助理,我发现
数类型nat
是一个线性序半环,类型int
是一个序环,
类型real
是一个有序字段。属性可能不适用于特定的类,例如,对于类型nat
,没有涉及减法的抽象属性(因为,当然,可能会以负数结束,而负数不是自然数)。相反,在类型nat
上提供了解决减法的具体定理。更重要的是,“所有涉及除法的抽象属性都需要一个字段。”(高阶逻辑的证明助手。)
所以,我们在这里看到一个商类型被用来将自然类型或整数类型的除法提升为抽象实数类型,以满足域的要求吗
要求(参见Isabelle/Isar参考手册§11.9)?商类型real是根据real.thy
文件中的等价关系定义realrel
创建的
我很惊讶在一个证明中看到实数项依赖于素数、正整数和有理数,我想确保我至少已经接近解释为什么在Isabelle证明中会出现这种情况。函数
sqrt
仅定义在实数上。因此,需要转换它的参数p
从nat
到real
。有一种强制会自动为您执行此操作;因此您可以使用real
功能
之后,键入m/n
的唯一方法是real m/real n
通常,重载语法对于证明助手来说是一个问题。例如,纸上的2/3
可以是伊莎贝尔的有理数fract23
,实数2/3
,或者是aF_5
中的3的倒数乘以2,或者其他一些
在Isabelle中,这可以通过(在一定程度上)避免过载和使用不同的符号来解决。我将您的答案纳入了一个针对Isabelle新用户的教程中(并引用了您的论文,我很喜欢)。对于感兴趣的人,带屏幕截图的LaTex排版教程位于
have (⋀m n. n ≠ 0 ⟹ ¦sqrt (real p)¦ = real m / real n ⟹ coprime m n ⟹ ?thesis) ⟹ ?thesis
proof (state)
this:
n ≠ 0
¦sqrt (real p)¦ = real m / real n
coprime m n
goal (1 subgoal):
1. sqrt (real p) ∈ ℚ ⟹ False