我仍然试图了解平等关系以及如何在伊莎贝尔中定义一个平等关系。幸运的是,在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
需要做些什么才能让替换工作?
答案 0 :(得分:2)
理论playground
导入Main
定义了很多。如果你想从裸露的地方开始,你应该使用Pure
代替。另一个问题是("_play" 5)
应该读("_" 5)
(它定义了语法)。完成这两项更改后,您可以继续。