我有以下文件 theory Scratch
imports Main
begin
class named =
fixes getName :: "'a ⇒ string"
class node = named
datatype Node = node string
fun getName_Node :: "Node ⇒ string" where
"getN
我想写包含一个公共变量组合的多个公式,但我很懒,所以我想要一个语法变量。 IE "a + b + c"
"a + b - c"
"a + b + e - a"
而是书写的“A + B”每次我愿意被体健写类似: X == a + b
"X + c"
"X - c"
"X - e - a"
具有相同功能胶乳与\有它包括命令。它仍然应该将“X-e-a”标识为“b-e”。
我想从一个非常简单的Isabelle程序生成代码。 typedef point = "{p::(real*real). True}" by(auto)
definition xCoord :: "point ⇒ real" where "xCoord P ≡ fst(Rep_point P)"
export_code xCoord in Haskell module_name Example
我定义了一个严格的顺序语言环境如下: locale strict_order =
fixes ls::"'a set ⇒ 'a set ⇒ bool"
assumes
irrefl:"¬ ls a a" and
trans:"ls a c ∧ ls c g ⟹ ls a g" and
asym:"ls a c ⟹ ¬ ls c a"
然后,我宣布一个类型str
对于这样一个例子引理:这给使用时,下列快速检查 lemma someFuncLemma: "∀ (e::someType) . pre_someFunc 2 e"
: Auto Quickcheck found a counterexample:
e = - 1
或使用鸡蛋里挑骨头(这是不是真的,当这里的要点): Nitpick found a counterexample:
我仍然试图在Isabelle中推理语义平等。 我想比较两个公式并查看它们是否相等。我之前被告知,我需要这种商号。 所以我试图给自己定义一个quotiernttype,但显然我的定义并不完整,因为在我的定义之后我似乎无法编写任何代码。 到目前为止我的代码是: theory Scratch
imports Main
begin
no_notation plus (infixl "+" 65)
Basicly有两种方式来定义一个构造我的数据类型之间的差异: typedecl basicTest
datatype test= af basicTest | plus test test (infixl "+" 35)
或我使用公理化: typedecl basicTest
datatype test= af basicTest
axiomatization
plus :: "te
我该如何声明Isabelle/HOL中不遵守排序约束的引理? 要解释为什么这是有道理的,请看下面的例子理论: theory Test
imports Main
begin
class embeddable =
fixes embedding::"'a ⇒ nat"
assumes "inj embedding"
lemma OFCLASS_I:
assum
以下函数定义由伊莎贝尔接受,所以终止检查是满意的: datatype 'a List = N | C 'a "'a List"
fun dequeue' :: "'a List × 'a List ⇒ ('a option × 'a queue)" where
"dequeue' (N, N) = (None, AQueue N N)"
|"dequeue' (xs, C y ys
我想向Isabelle输入一个模式,但是当我向范围限制或域限制添加到不想解析的定理证明者时。我在乳胶以下模式: \begin{schema}{VideoShop}
members: \power PERSON \\
rented: PERSON \rel TITLE \\
stockLevel: TITLE \pfun \nat
\where
\dom rented \subseteq