module Proof: sig
.. end
The representation and checking of proofs
val checkProofs : bool Pervasives.ref
Whether to check the proofs
val printMagicProofWarning : bool Pervasives.ref
Whether to print warnings for Magic proofs
type
parg =
type
proof =
type
lemma = {
}
val infer : Logic.var list ->
(Util.symbol * Logic.pred) list -> proof -> Logic.pred
val check : Logic.var list ->
(Util.symbol * Logic.pred) list -> proof -> Logic.pred -> unit
val registerLemma : lemma -> proof -> unit
Register a lemma, along with its proof
val registeredLemmas : unit -> lemma list
val findRegisteredLemma : Util.symbol -> lemma
type
edef = string * string list * Logic.exp
Expression definitions. The name of the defined constructor (use a
lowercase name), the list of formals, and the body, referring to the
formals using deBruijn indices.
type
pdef = string * string list * Logic.pred
val registerEDef : edef -> unit
Register an expression definition
val registerPDef : pdef -> unit
Register a predicate definition
val mkContraProof : Util.symbol -> Logic.pred -> proof -> proof
Make a proof by contradiction
val d_prf : unit -> proof -> Pretty.doc
val dpa : parg -> Pretty.doc
val printer : Logic.logicPrinter Pervasives.ref
We can install a new printer for the Proof module
val allEDefs : (string, edef) Hashtbl.t
These are exported temporarily
val allPDefs : (string, pdef) Hashtbl.t
val allLemmas : lemma Inthash.t
val init : unit -> unit
Initialize the proof module
val snapshot : unit -> unit -> unit
Take a snapshot of the state of the proof module. The only state is the
set of registered lemmas and constructors
val findLemma : lemma -> unit
val registeredLemmas : unit -> lemma list
val makeExistVar : string -> Logic.exp