Isabelle 如何让伊莎贝尔认识到一个明显的结论
我试图证明,在伊莎贝尔中,集合的边界、内部和外部是不相交的。在我标记为“***”的那一行中,Isabelle 如何让伊莎贝尔认识到一个明显的结论,isabelle,Isabelle,我试图证明,在伊莎贝尔中,集合的边界、内部和外部是不相交的。在我标记为“***”的那一行中,c\d={}这一事实显然与前一行一致,因为在块的开头给出了假设,那么我如何让isabelle理解这一点呢 theory Scratch imports "~~/src/HOL/Multivariate_Analysis/Topology_Euclidean_Space" "~~/src/HOL/Probability/Sigma_Algebra" begin lemma boundary_dis
c\d={}
这一事实显然与前一行一致,因为在块的开头给出了假设,那么我如何让isabelle理解这一点呢
theory Scratch
imports
"~~/src/HOL/Multivariate_Analysis/Topology_Euclidean_Space"
"~~/src/HOL/Probability/Sigma_Algebra"
begin
lemma boundary_disjoint: "disjoint {frontier S, interior S, interior (-S)}"
proof (rule disjointI)
fix c d assume sets:
"c \<in> {frontier S, interior S, interior (-S)}"
"d \<in> {frontier S, interior S, interior (-S)}"
and "c \<noteq> d"
show "c \<inter> d = {}"
proof cases
assume "c = frontier S \<and> d = interior S"
then show ?thesis using frontier_def by auto
next
assume "c = frontier S \<and> d = interior (-S)"
have "closure S \<inter> interior (-S) = {}" by (simp add: closure_interior)
hence "frontier S \<inter> interior (-S) = {}" using frontier_def by auto
*** then show ?thesis by auto
next
qed
qed
end
理论划痕
进口
“~~/src/HOL/multivariable\u Analysis/Topology\u Euclidean\u Space”
“~~~/src/HOL/Probability/Sigma_代数”
开始
引理边界不相交:“不相交{边界S,内部S,内部(-S)}”
证明(规则分离)
修复c d假设集:
“边界S,内部S,内部(-S)}”
“边界S,内部S,内部(-S)}”
和“c\d”
显示“c\d={}”
证明案例
假设“c=前沿S\d=内部S”
然后自动使用frontier_def显示论文
下一个
假设“c=前沿S\d=内部(-S)”
通过(simp-add:closure\u interior)使“closure S\interior(-S)={}”
因此,自动使用frontier_def“frontier S\ interior(-S)={}”
***然后自动显示论文
下一个
量化宽松
量化宽松
结束
在Isar中,必须明确引用要使用的事实。如果你说你的目标来自上一行和你所做的局部假设,你应该通过写astake a:“c=S”给假设取一个名字∧ d=内部(-S)“
,然后您可以通过自动提交have?论文来证明您的目标
为什么我要写have
而不是show
?嗯,还有一个问题。你做了一个案例证明
,但使用了规则(P⟹ Q)⟹ (-P)⟹ Q)⟹ Q
,即它具有“P是真还是假?”这类区分大小写的功能。这不是你想要的
一种区分案例的方法是这样做:
from sets show "c ∩ d = {}"
proof (elim singletonE insertE)
insertE
是x形式事实的消除规则∈ 插入y A
,由于{A,b,c}
只是插入A(插入b(插入c A))
的语法糖,这就是您想要的singletonE
类似,但专门用于x∈ {y}
;使用singletonE
而不是insertE
意味着您不会遇到像x这样假设的琐碎情况∈ {}
这就给出了9种情况,其中3种是通过simp\u all
轻松解决的。如果你想,其余的问题你必须在Isar中证明自己,但也可以通过auto
轻松解决:
from sets and `c ≠ d` show "c ∩ d = {}"
by (auto simp: frontier_def closure_def interior_closure)