如何在Isabelle/HOL中获得引理之外的证人实例
我正在使用Isabelle/HOL,试图证明一个语句如何在Isabelle/HOL中获得引理之外的证人实例,isabelle,Isabelle,我正在使用Isabelle/HOL,试图证明一个语句Q。在证明Q的过程中,我已经证明了满足P::“nat=>bool”的自然数的存在性。如何创建满足P的实例x::nat,以便在后续引理中引用它 在任何给定引理中,我都可以使用gets命令来实现。但是,我想在许多不同的引理中引用同一个见证实例,所以我需要一种在任何引理之外的方法。我尝试在一个新的区域设置中使用fix/aspect,如下所示: locale outerlocale fixes a b c ... begin definition
Q
。在证明Q
的过程中,我已经证明了满足P::“nat=>bool”
的自然数的存在性。如何创建满足P
的实例x::nat
,以便在后续引理中引用它
在任何给定引理中,我都可以使用gets命令来实现。但是,我想在许多不同的引理中引用同一个见证实例,所以我需要一种在任何引理之外的方法。我尝试在一个新的区域设置中使用fix/aspect,如下所示:
locale outerlocale
fixes a b c ...
begin
definition Q::bool where ...
lemma existence: "EX x. P x"
proof -
...
qed
locale innerlocale = outerlocale +
fixes x::nat
assumes "P x"
begin
(*lots of lemmas that reference x*)
lemma innerlemma0
...
lemma innerlemma7
proof -
...
qed
lemma finalinnerlemma: "Q"
proof -
...
...
qed
end (*innerlocale*)
lemma outerlemma: "Q"
proof -
(*I don't know what goes here*)
qed
end (*outerlocale)
不幸的是,这只会让事情变得更糟。我需要一种方法来使用存在引理将最终的内部引理提取到外部区域。如果我试图解释内部环境,我将再次面临提供证人的问题。我不能在引理内解释locale(除非我误解了我得到的错误),也不能在引理外使用get,所以我被卡住了
看来我也需要弄清楚
- 如何在引理或引理之外指定见证实例
- 如何通过证明区域设置的假设从该区域设置中提取引理
还是有更好的方法来做我想做的事?谢谢 你可以使用
一些x。P x
,例如,在定义中:
definition my_witness :: nat where
"my_witness = (SOME x. P x)"
然后使用thm someI_ex
显示p my_witness