在Isabelle/HOL函数中嵌入SMT
我需要使用一些等式推理,但我对重新定义所有基础理论不感兴趣。我的目标是像sledgehammer那样使用现有的SMT解算器。例如,假设这个等式理论有一些简单的算术在Isabelle/HOL函数中嵌入SMT,isabelle,smt,theorem-proving,Isabelle,Smt,Theorem Proving,我需要使用一些等式推理,但我对重新定义所有基础理论不感兴趣。我的目标是像sledgehammer那样使用现有的SMT解算器。例如,假设这个等式理论有一些简单的算术 datatype expr = Var string | Const nat datatype constraint = Eq "expr * expr" (* E1 = E2 *) fun SAT :: "constraint list ⇒ bool" where "SAT L = undefin
datatype expr = Var string
| Const nat
datatype constraint = Eq "expr * expr" (* E1 = E2 *)
fun SAT :: "constraint list ⇒ bool" where
"SAT L = undefined (* calling an SMT-solver here *)"
类型约束列表
包含嵌入逻辑约束的约束,我希望发送给SMT解算器以返回true(如果可能)。并因此断言以下内容应返回false
value "SAT [Eq(Var ''X1'', Var ''X2''), (* X1 = X2*)
Eq(Var ''X1'', Const 0), (* X1 = 0 *)
Eq(Var ''X2'', Const (Suc 0))]" (* X2 = 1 *)
我应如何着手这样做