我仍然试图在Isabelle中推理语义上的平等。 我想比较两个公式,看看它们是否相等。我之前被告知,我需要这样的商品类型。 所以我试着给自己定义一个quotiernttype,但显然我的定义并不完整,因为我似乎无法在我的定义之后编写任何代码。 到目前为止我的代码是:
theory Scratch
imports Main
begin
no_notation plus (infixl "+" 65)
typedecl basicForm
datatype form_rep = af basicForm
axiomatization
equals :: "form_rep ⇒ form_rep ⇒ bool" (infix "≐" 1) and
plus :: "form_rep ⇒ form_rep ⇒ form_rep" (infixl "+" 35)
where
reflexive: "x ≐ x" and
symmetric: "x ≐ y ⟹ y ≐ x" and
transitiv: "x ≐ y ⟹ y ≐ z ⟹ x ≐ z" and
commut: "x + y ≐ y + x" and
associatPlus: "(x + y) + z ≐ x + (y + z)" and
idemo: "x + x ≐ x"
quotient_type formula = "form_rep" / "equals"
我有一些基本公式和它的复杂版本,我想对复杂类型进行推理,因此我定义了等于三个公理的等式关系和另外三个简单的公理。
编辑:显然我是一个忘记添加引号的白痴-.- 仍然不知道如何继续思考。
答案 0 :(得分:0)
quotient_type
命令需要正确完成校样。查看证明状态输出需要证明的内容。 isar-ref 手册中明确或隐含地解释了这些内容。
无关的说明:
最好避免重复使用+
之类的基本表示法。 Prover IDE中的 Symbols 面板提供了许多替代方案。
更好地避免自由形式的公理化,特别是对于最初的例子。只需了解Isabelle / HOL已经提供的内容,并在其基础上进行定义(datatype
,definition
,inductive
,fun
等。
Isabelle不使用Camel-case。