如何在Isabelle中定义从一个集合到另一个集合(f:a->;B)的函数/映射?
Isabelle/HOL(2021)中定义函数如何在Isabelle中定义从一个集合到另一个集合(f:a->;B)的函数/映射?,isabelle,Isabelle,Isabelle/HOL(2021)中定义函数f从一个特定集合a到另一集合B的正确方法是什么 从数学上讲,函数f:a->B通常被定义为从其域a到其共域B的映射。函数f被定义为a×B中的一种特殊关系,只有一个y∈ B满足每个x的xfy∈ A 但在Isabelle/HOL中,函数似乎是根据计算来定义的,例如fx=sucx。似乎没有明确定义域和共域的地方 我只是想知道,是否有一种传统的方法来定义Isabelle中的函数,即域函数和共域函数,并与上述关系的定义兼容。Background 正如您所注意到的
f
从一个特定集合a
到另一集合B
的正确方法是什么
从数学上讲,函数f:a->B
通常被定义为从其域a
到其共域B
的映射。函数f
被定义为a×B
中的一种特殊关系,只有一个y∈ B满足每个x的xfy
∈ A
但在Isabelle/HOL中,函数似乎是根据计算来定义的,例如fx=sucx
。似乎没有明确定义域和共域的地方
我只是想知道,是否有一种传统的方法来定义Isabelle中的函数,即域函数和共域函数,并与上述关系的定义兼容。Background 正如您所注意到的,在Isabelle/HOL中,函数通常是
'a类型的术语⇒'b
,其中'a
和'b
可以是任意类型。因此,Isabelle中的所有功能都是完整的。Joachim Breitner的一篇博文很好地解释了这一点:。我不会重述博文内容的任何内容:相反,我将集中讨论您在问题中提出的问题
函数的常规定义
我知道在传统数学中定义函数有两种方法(这里我使用术语“传统数学”来表示在某些集合论基础中暴露的数学):
relation.thy
中提供了单值关系概念的定义。该定义隐含在谓词单值的定义中:
definition single_valued :: "('a × 'b) set ⇒ bool"
where "single_valued r ⟷ (∀x y. (x, y) ∈ r ⟶ (∀z. (x, z) ∈ r ⟶ y = z))"
因此,有效地,单值关系是('a×'b)集合
类型的一个术语,它满足谓词单值
。文中还给出了关于这一定义的一些初步结果
当然,这个谓词可以用来创建从'a
到'b
的“函数作为关系”的新类型构造函数。有关在Isabelle/HOL中定义新类型构造函数的更多信息,请参见Isabelle[3,第11.7节]的官方文件和Isabelle/HOL[4,第3节]中的文章“提升和转移:商的模块化设计”。这样的类型已经在某个地方出现,这是不可能的,但我在快速搜索源代码后找不到它(或任何类似的东西)。
当然,几乎没有什么可以阻止我们提供一种类型,它可以捕获答案前面小节中给出的函数的任何一种集合论定义。我想,像下面这样的定义可能会起作用,但我还没有测试过:
typedef ('a, 'b) relfun =
‹
{
(A::'a set, B::'b set, f::('a × 'b) set).
single_valued f ∧ Domain f = A ∧ Range f ⊆ B
}
›
proof-
let ?r = ‹({}, {}, {})›
show ?thesis unfolding single_valued_def by (intro exI[of _ ?r]) simp
qed
Isabelle/HOL II:FuncSet和其他限制
虽然Isabelle/HOL中的函数是完整的,但仍然可以使用各种方法将函数限制在某个预定义域(即UNIV::'a set
)的适当子集)。一种常见的方法(见theoryHOL Library.FuncSet
)是强制函数在域的某些部分上未定义。我在下文中的回答更详细地解释了这一点
Isabelle/HOL III:HOL/ZF、HOL和HOTG中的ZFC
这可能有点离题。然而,存在Isabelle/HOL的扩展以及不同强度的集合论公理[5,6,7]。例如,HOL[6]中的ZFC提供了一种表示冯·诺依曼宇宙的特定类型V
。我们现在可以定义所有相关的集合论概念,当然包括函数的常规定义。在HOL中的ZFC中,可以使用所谓的运算符VLambda
将HOL中定义的函数内部化,例如:(F::V)=VLambda(A::V)(F::V⇒五)
。现在,F
是一个单值二元关系,内部化在类型V
中,具有域a
和形式的值⟨x、 f x⟩代码>
作为旁注,在我自己进行范畴理论的形式化工作时,我明确地将函数的两个定义作为V
上的谓词
摘要
Isabelle/HOL(2021)中定义函数f的正确方法是什么
从特定集合a到另一集合B
为了直接回答你的问题,我的观点是,没有一种“正确的方法”来定义从一个特定集合a到另一个集合B的函数。然而,你可以探索许多选项:每个选项都有其特定的优缺点
参考资料
Takeuti G,Zaring WM。公理集合论导论。海德堡:斯普林格·维拉格;1971年
戈德布拉特·R·拓扑:逻辑的范畴分析。米内奥拉:多佛出版物;2013年
Wenzel M.《伊莎贝尔/Isar参考手册》。2019年