在Isabelle中定义quotient_type

时间:2016-01-19 16:15:46

标签: equality isabelle isar

我仍然试图在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"

我有一些基本公式和它的复杂版本,我想对复杂类型进行推理,因此我定义了等于三个公理的等式关系和另外三个简单的公理。

编辑:显然我是一个忘记添加引号的白痴-.- 仍然不知道如何继续思考。

1 个答案:

答案 0 :(得分:0)

quotient_type命令需要正确完成校样。查看证明状态输出需要证明的内容。 isar-ref 手册中明确或隐含地解释了这些内容。

无关的说明:

  • 最好避免重复使用+之类的基本表示法。 Prover IDE中的 Symbols 面板提供了许多替代方案。

  • 更好地避免自由形式的公理化,特别是对于最初的例子。只需了解Isabelle / HOL已经提供的内容,并在其基础上进行定义(datatypedefinitioninductivefun等。

  • Isabelle不使用Camel-case。