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)