module Lemma_propositional:propositional 'lemma' generationsig..end
treats a conflict set, i.e. the negation of a set of splits leading to a conflict, as a lemma and performs propagations and closures on it.
See Lemma for details.
typeconfig =Config.config
typebound =Bound.bound
typeliteral =Term.literal
typeclause =Term.clause
typestate =State.state
typecontext =Context.context
typechoice_point =State.choice_point
typeexplanation =State.explanation
type propositional_lemmas
typeraw_context_unifier =Context_unifier.raw_context_unifier
typecandidates =Selection_assert.candidates
typeselected =Selection_types.selected
typespace_registry =Context_unifier_space.space_registry
type lemmas_propositional
val create : config ->
state ->
context ->
candidates ->
(raw_context_unifier -> unit) ->
(raw_context_unifier -> bool) ->
space_registry ->
lemmas_propositionalcreate config state context candidates process_close_candidate process_assert_candidate space_registry
creates a lemmas_propositional structure.
process_close_candidate and process_split_candidate correspond
to the elements of the same name in Context_unifier.context_unifier_space,
and are used by Lemma_propositional.extend_context
to propagate candidates.val add_lemma : lemmas_propositional ->
clause -> bool -> unitadd_lemma lemmas_propositional lemma global
adds the lemma.
if global then the lemma is independent of the current derivation
and can be reused after a restart.
val extend_context : lemmas_propositional -> Context.element -> unitval get_lemmas : lemmas_propositional -> clause listval backtrack : lemmas_propositional -> unit