module Plugin:sig
..end
A plugin is a bridge between OCaml code and some meta-level property
of the prover. For instance, a default plugin is bound to the predicate
"holds", which states that some (encoded) clause holds in the current
problem. The plugin for "holds" provides a view centered on the "holds"
predicate, and allows to add "holds" facts and filter on them.
Plugins can handle some inner type that can be encoded/decoded
to meta-prover-compatible types.
typeterm =
Reasoner.term
typety =
Reasoner.ty
class type core =object
..end
class type['a]
t =object
..end
typefoclause =
Encoding.foclause
module Set:sig
..end
val holds : foclause t
val axiom : (Libzipperposition.ID.t * term list) t
val theory : (Libzipperposition.ID.t * term list) t
val lemma : foclause t
Plugin.holds
, but explicitely used for facts
deduced by the meta-prover. In general lemma f => holds f
.val pre_rewrite : (term * term) list t
val rewrite : (Libzipperposition.FOTerm.t * Libzipperposition.FOTerm.t) list t
module Base:sig
..end
val facts : Reasoner.t -> 'a t -> 'a Sequence.t
val of_consequence : Reasoner.consequence -> 'a t -> 'a option
val of_consequences : Reasoner.consequence Sequence.t -> 'a t -> 'a Sequence.t