Module Logic_simplification


module Logic_simplification: sig .. end
Given a list of terms (representing a conjunction), if a positive call or return is present, then all negative ones are obvious and removed

Basic simplification over Promelaast.typed_condition


val pretty_clause : Format.formatter -> Promelaast.typed_condition list -> unit
val pretty_dnf : Format.formatter -> Promelaast.typed_condition list list -> unit
val condToDNF : Promelaast.typed_condition -> Promelaast.typed_condition list list
val removeTerm : Promelaast.typed_condition ->
Promelaast.typed_condition list -> Promelaast.typed_condition list
val positiveCallOrRet : Promelaast.typed_condition list -> Promelaast.typed_condition list
Given a list of terms (representing a conjunction), if a positive call or return is present, then all negative ones are obvious and removed
val rel_are_equals : 'a * Cil_types.term * Cil_types.term ->
'a * Cil_types.term * Cil_types.term -> bool
val opposite_rel : Cil_types.relation -> Cil_types.relation
val contradict_rel : Cil_types.relation * Cil_types.term * Cil_types.term ->
Cil_types.relation * Cil_types.term * Cil_types.term -> bool
val simplify : Promelaast.typed_condition list -> Promelaast.typed_condition list
Simplify redundant relations.
val termsAreEqual : Promelaast.typed_condition -> Promelaast.typed_condition -> bool
val clausesAreSubSetEq : Promelaast.typed_condition list -> Promelaast.typed_condition list -> bool
true iff clause1 <: clause2
val clausesAreEqual : Promelaast.typed_condition list -> Promelaast.typed_condition list -> bool
true iff clause1 <: clause2 and clause2 <: clause1
val removeClause : Promelaast.typed_condition list list ->
Promelaast.typed_condition list -> Promelaast.typed_condition list list
return the clauses list named lclauses without any clause c such as cl <: c
val negativeClause : Promelaast.typed_condition list -> Promelaast.typed_condition list
val simplifyClauses : Promelaast.typed_condition list list -> Promelaast.typed_condition list list
val tor : Promelaast.typed_condition ->
Promelaast.typed_condition -> Promelaast.typed_condition
val tand : Promelaast.typed_condition ->
Promelaast.typed_condition -> Promelaast.typed_condition

smart constructors for typed conditions


val tnot : Promelaast.typed_condition -> Promelaast.typed_condition
val tands : Promelaast.typed_condition list -> Promelaast.typed_condition
val tors : Promelaast.typed_condition list -> Promelaast.typed_condition
val dnfToCond : Promelaast.typed_condition list list -> Promelaast.typed_condition
Given a DNF condition, it returns a condition in Promelaast.condition form. WARNING : empty lists not supported
val dnfToParametrized : Promelaast.typed_condition list list -> Promelaast.typed_condition list list
val simplClause : Promelaast.typed_condition list list ->
Promelaast.typed_condition list -> Promelaast.typed_condition list list
val simplifyCond : Promelaast.typed_condition ->
Promelaast.typed_condition * Promelaast.typed_condition list list
Given a condition, this function does some logical simplifications. It returns both the simplified condition and a disjunction of conjunctions of parametrized call or return.

Given a condition, this function does some logical simplifications and returns an equivalent DNF form together with the simplified version

val simplifyTrans : Promelaast.typed_condition Promelaast.trans list ->
Promelaast.typed_condition Promelaast.trans list *
Promelaast.typed_condition list list list
Given a list of transitions, this function returns the same list of transition with simplifyCond done on its cross condition

Given a transition list, this function returns the same transition list with simplifyCond done on each cross condition. Uncrossable transition are removed.

val simplifyDNFwrtCtx : Promelaast.typed_condition list list ->
Kernel_function.t -> Promelaast.funcStatus -> Promelaast.typed_condition
Given a DNF condition, it returns the same condition simplified according to the context (function name and status). Hence, the returned condition is without any Call/Return stmts.