sig
val checkProofs : bool Pervasives.ref
val printMagicProofWarning : bool Pervasives.ref
type parg =
I of int
| S of string
| E of Logic.exp
| P of Proof.proof
| F of Logic.pred
and proof =
Hyp of Util.symbol
| Truei
| Falsee of Proof.proof
| Andi of Proof.proof list
| Ande of int * Proof.proof
| Alli of Logic.var * Proof.proof
| Alle of Logic.exp * Proof.proof
| Existe of Logic.var * Proof.proof
| Impi of Util.symbol * Logic.pred * Proof.proof
| Impe of Proof.proof * Proof.proof
| Contra of Util.symbol * Logic.pred * Proof.proof
| G of string * Proof.parg list
| Refl of Logic.exp
| Symm of Proof.proof
| Trans of Logic.exp * Proof.proof * Proof.proof
| Cong of Logic.exp * Logic.exp * Proof.proof list
| WithLemma of Util.symbol * Logic.exp list * Proof.proof list
| UnrollPDef of Logic.pred * Proof.proof
| UnrollEDef of Logic.pred * string * Proof.proof
| RollEDef of Logic.pred * string * Proof.proof
| Arith of Logic.exp * Logic.exp
| ArithNeq of int * Logic.exp * Logic.exp
| ArithApart of int * Logic.exp * Logic.exp
| ArithGeq of int * Logic.exp * Logic.exp
| ArithGt of int * Logic.exp * Logic.exp
| SelUpd0 of Logic.exp * Logic.exp * Logic.exp
| SelUpd1 of Logic.exp * Logic.exp * Proof.proof
| Magic of string * Logic.pred
| MagicLemma of Proof.lemma
| Unimplemented of string
and lemma = {
lname : Util.symbol;
lvars : string list;
lhyps : Logic.pred list;
lconc : Logic.pred;
}
val infer :
Logic.var list ->
(Util.symbol * Logic.pred) list -> Proof.proof -> Logic.pred
val check :
Logic.var list ->
(Util.symbol * Logic.pred) list -> Proof.proof -> Logic.pred -> unit
val registerLemma : Proof.lemma -> Proof.proof -> unit
val registeredLemmas : unit -> lemma list
val findRegisteredLemma : Util.symbol -> Proof.lemma
type edef = string * string list * Logic.exp
type pdef = string * string list * Logic.pred
val registerEDef : Proof.edef -> unit
val registerPDef : Proof.pdef -> unit
val mkContraProof : Util.symbol -> Logic.pred -> Proof.proof -> Proof.proof
val d_prf : unit -> Proof.proof -> Pretty.doc
val dpa : Proof.parg -> Pretty.doc
val printer : Logic.logicPrinter Pervasives.ref
val allEDefs : (string, Proof.edef) Hashtbl.t
val allPDefs : (string, Proof.pdef) Hashtbl.t
val allLemmas : Proof.lemma Inthash.t
val init : unit -> unit
val snapshot : unit -> unit -> unit
val findLemma : Proof.lemma -> unit
val registeredLemmas : unit -> Proof.lemma list
val makeExistVar : string -> Logic.exp
end