Isabelle 要求澄清在涉及伊莎贝尔理论中自然数的理论中出现的表观实数强制

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

我正在伊莎贝尔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 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
,或者是a
F_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