Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Isabelle 完善伊莎贝尔的定义_Isabelle - Fatal编程技术网

Isabelle 完善伊莎贝尔的定义

Isabelle 完善伊莎贝尔的定义,isabelle,Isabelle,我在Isabelle中有以下定义(详情见): 现在,这个粘合应该是定义集合上的等价关系: e_aff × (range Bit) 因此,我想改进类型: (real × real) × bit 对这个。如果我直接根据粘合的定义进行操作,我会得到: 未定义的类型名称:“e_aff”⌂ 但如果我尝试通过类型定义来实现这一点: typedef e_aff_t = "e_aff" 我得到: 表示集合“d”的变量非法 上述错误发生在typedef“e_aff_t”中 我认为这来自于e_aff的内部定义

我在Isabelle中有以下定义(详情见):

现在,这个粘合应该是定义集合上的等价关系:

e_aff × (range Bit)
因此,我想改进类型:

(real × real) × bit
对这个。如果我直接根据粘合的定义进行操作,我会得到:

未定义的类型名称:“e_aff”⌂

但如果我尝试通过类型定义来实现这一点:

typedef e_aff_t = "e_aff"
我得到:

表示集合“d”的变量非法 上述错误发生在typedef“e_aff_t”中

我认为这来自于
e_aff
的内部定义


我应该如何解决这个问题?

我将提供几点意见。如果这些还不够,请随时提问,我会尽力回答

但如果我尝试通过类型定义来实现这一点:

typedef e_aff_t = "e_aff"
typedef e_aff_t=“e_aff”

我得到:

表示集合“d”的变量非法发生上述错误 类型定义为“e_aff_t”

这是因为
e_aff
依赖于固定变量。据我所知,目前逻辑不接受这一点(通过从类型到集合的本地Typedef规则提供的有限支持除外):
typedefαk=S
要求
S
为封闭项,
k
为封闭项 新类型构造函数和
S
中的所有类型变量都需要在
α中的变量。在您的情况下,
S
不是一个封闭术语。有许多有价值的资源详细解释了这一点,其中许多在Ondřej Kunčar的博士论文中被引用


合理的解决方案

考虑到我对您的申请的了解,可能的选项按我个人偏好的顺序列出。然而,请记住,鉴于我自己有限的经验,这可能不是一份详尽的清单,而且,我对你的最终目标知之甚少


基于集合的商

我认为,表示粘合的最简单方法是在
e_aff×UNIV::bit
上建立等价关系

definition qs where "qs = (e_aff × (range Bit)) // gluing"

lemma "equiv (e_aff × (range Bit)) gluing"
  sorry
一旦完成了这项工作,理论
等价关系(以及其他)为处理基于集合的商提供了许多有用的定理


类型到集合

您还可以选择使用从类型到集合的本地Typedef规则,以基于固定变量创建具有
商_type
的上下文。但是,您仍然需要将基于类型的定理转换为基于集合的定理,然后才能在任何应用程序中使用它们(转换是自动的)。如果你有兴趣,我可以提供更多的细节和一个例子。然而,我相信,对于您的应用程序来说,这并不比直接处理基于集合的定理更优越


商_型


如果出于任何原因,您仍然坚持使用基于类型的方法,那么,我想,您可以尝试重新阐述该理论,使
e_aff
不依赖于固定变量。为此,您可以使用希尔伯特选择,例如
定义c,其中“c=(SOME c::real.True)”
,等等。。。然而,我不认为这是一种标准做法,并将受到鼓励

事实证明,我应该探索更多类型的集合方法。我发布了一个新问题