Module Engine.FOSolver

val check_satisfiability_with_model : Gillian.Gil_syntax.Formula.t list -> Symbolic.Type_env.t -> Gillian.Symbolic.Subst.t option

check_satisfiability_with_model pfs gamma checks whether or not the pure formulae pfs are satisfiable under the typing environment gamma. If this is the case, the function returns the appropriate logical environment.

val check_satisfiability : ?matching:bool -> ?time:string -> ?relevant_info: (Utils.Containers.SS.t * Utils.Containers.SS.t * Utils.Containers.SS.t) -> Gillian.Gil_syntax.Formula.t list -> Symbolic.Type_env.t -> bool

check_satisfiability ?matching pfs gamma checks whether or not the pure formulae pfs are satisfiable under the typing environment gamma. The matching flag should not be used by Gillian instantiation developers.

val sat : matching:bool -> pfs:Symbolic.Pure_context.t -> gamma:Symbolic.Type_env.t -> Gillian.Gil_syntax.Formula.t -> bool

A different API for check_satisfiability better adapted for usage in memory models

val check_entailment : ?matching:bool -> Utils.Containers.SS.t -> Symbolic.Pure_context.t -> Gillian.Gil_syntax.Formula.t list -> Symbolic.Type_env.t -> bool

check_entailment existentials lpfs rpfs gamma checks whether or not the entailment << ∃ existentials. lpfs => rpfs >> holds under the typing environment gamma.

is_equal e1 e2 pfs gamma checks whether or not << pfs, gamma |- e1 = e2 >>.

is_different e1 e2 pfs gamma checks whether or not << pfs, gamma |- e1 <> e2 >>.

val resolve_loc_name : pfs:Symbolic.Pure_context.t -> gamma:Symbolic.Type_env.t -> Gillian.Gil_syntax.Expr.t -> string option