首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于元组的Isabelle/HOL问题

关于元组的Isabelle/HOL问题
EN

Stack Overflow用户
提问于 2020-01-05 11:48:36
回答 1查看 196关注 0票数 0

关于伊莎贝尔/霍尔,我有一个初学者的问题:

我要证明以下引理:

lemma shows "{(x,y) . x ∈ {0..<n} ∧ y ∈ {0..<n} ∧ x = y} = {(x,x). x < n}"

但证据是:

proof (prove) goal (1 subgoal): 1. {(x, y). x ∈ {0..<n} ∧ y ∈ {0..<n} ∧ x = y} = {(xa, x). x < n}

为什么xa会出现,我如何定义正确(简洁)的设置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-05 13:44:50

集合理解(x,y)中的{(x,y). ....}是绑定变量名。在编写{(x,x). x < n}时,绑定两个名为x的变量,其中第二个x 影影为第一个。

实际上,{(x,x). x < n}只是lambda术语的一个很好的语法。在内部,它会转换为Collect (case_prod (λx. λx. x < n))。从这个角度看,阴影是比较明显的。

要解决问题,您必须显式地表示第一个和第二个绑定变量必须相同的信息,即:{(x1,x2). x1 = x2 ∧ x1 < n}

顺便提一句:你试图展示的引理是不真实的。(例如,n可以是一个int。)如果您想让n成为一个nat,那么您必须明确这一点,例如,在您的目标中输入一个类似于{(x,y). x ∈ {0..<(n::nat)} ∧ y ∈ {0..<n} ∧ x = y} = {(x1,x2). x1 = x2 ∧ x1 < n}的类型。

特别是,如果您是初学者,我强烈建议在引理头中使用语法lemma Name: fixes n :: ‹nat› assumes ‹...› shows ‹...›显式地引入空闲变量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59599544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档