Isabelle / isar:实施等式推理

时间:2016-01-12 15:27:35

标签: equality isabelle isar

我仍然试图了解平等关系以及如何在伊莎贝尔中定义一个平等关系。幸运的是,在isar参考手册2.3.1 p38f中有一章关于这一点。

我试图重建给定的例子。为了避免与已建立的语法重叠,我重命名了一切。我还添加了一些引号,因为它们似乎在示例中缺失。

theory playground
imports Main
begin

typedecl i_play
typedecl u_play

下一步是判断我真的不明白,但嘿可能出错:

judgment
Trueprop :: "u_play => prop" ("_play" 5)

error: Attempt to redeclare object-logic judgment

即使重命名Trueprop也不会产生另一个结果。

我不能在某种程度上使用bool而不是定义我自己的对象命题吗? 或者我需要在其他地方介绍u_play吗?

但是,让我们走得更远。下一步是相等关系,也是复制和重命名。

axiomatization
equal :: "i_play => i_play => u_play" (infix "EQ" 50)
where
refl [intro]: "x EQ x" and
subst [elim]: "x EQ y ⟹ B x ⟹ B y"

这会产生Type unification failed: Clash of types "u_play" and "bool"错误。当我用bool替换u_play时,一切都很好,我甚至可以在像EQ这样的小事上使用lemma t : "x EQ x",但是替换规则似乎不起作用,这使我想到了两个B的问题是什么那里。我在HOL.thy中看到了与P's相同的构造,而在isar rm中稍微向下省略了它们。只是说明impD [dest]: (A --> B) ==> A ==> B

需要做些什么才能让替换工作?

1 个答案:

答案 0 :(得分:2)

理论playground导入Main定义了很多。如果你想从裸露的地方开始,你应该使用Pure代替。另一个问题是("_play" 5)应该读("_" 5)(它定义了语法)。完成这两项更改后,您可以继续。