module Context_unifier_check:context unifier validity checksig..end
Checks if an assert context unifier meets the Assert rule
preconditions,
and checks if a context unifier obeys the deeping bound.
typeconfig =Config.config
typebound =Bound.bound
typevar =Var.var
typeliteral =Term.literal
typeclause =Term.clause
typesubst =Subst.subst
typecontext_unifier_space =Context_unifier.context_unifier_space
typecontext_partners =Context_unifier.context_partners
typeraw_context_unifier =Context_unifier.raw_context_unifier
val check_close : config ->
subst ->
context_unifier_space ->
context_partners ->
raw_context_unifier optionraw_context_unifier,
assumes that subst has an empty remainder.val check_assert : config ->
bound ->
Context.context ->
subst ->
context_unifier_space ->
context_partners ->
bool -> raw_context_unifier optioncheck_assert config bound context subst
context_unifier_space context_partners is_element_incomplete
returns the raw_context_unifier representation of the assert literal,
if subst is a valid 'assert context unifier'.
I.e. exactly one context_partner in context_partners
is Context_unifier.assert_partner
and considered to be the gap in the context unifier.
Then, the assert rule criteria of the model evolution calculus must apply:Config.lemma_parametric_assert.
this is checkedis_element_incomplete corresponds to the status of the context unifier wrt.
Selection_assert.is_element_incomplete.
Returns also none,
if the candidate does exceed the bound (Bound.bound.exceeds)
and is not required later on as specified by config.
Then, the candidate is registered as dropped (Bound.bound.register).
val check_split : config ->
bound ->
subst ->
context_unifier_space ->
context_partners ->
bool -> raw_context_unifier optioncheck_split config bound subst
context_unifier_space context_partners is_element_incomplete
returns the raw_context_unifier representation
of the context unifier subst between
the input clause context_unifier_space
and the context literals context_partners.
Does not check if the remainder is empty,
this must be done separately with Context_unifier_check.check_close.
is_element_incomplete corresponds to the status of the context unifier wrt.
Selection_assert.is_element_incomplete.
Returns also none,
if the candidate does exceed the bound (Bound.bound.exceeds)
and is not required later on as specified by config.
Then, the candidate is registered as dropped (Bound.bound.register).