Engine.MPtype outs = (Gillian.Gil_syntax.Expr.t * Gillian.Gil_syntax.Expr.t) listval outs_pp : outs Fmt.ttype step = Gillian.Gil_syntax.Asrt.atom * outsThe step type represents a matching plan step, consisting of an assertion together with the possible learned outs
val step_to_yojson : step -> Yojson.Safe.tval step_of_yojson : Yojson.Safe.t -> step Ppx_deriving_yojson_runtime.error_ortype label = string * Utils.Containers.SS.tval label_to_yojson : label -> Yojson.Safe.tval label_of_yojson :
Yojson.Safe.t ->
label Ppx_deriving_yojson_runtime.error_ortype post = Gillian.Gil_syntax.Flag.t * Gillian.Gil_syntax.Asrt.t listval post_to_yojson : post -> Yojson.Safe.tval post_of_yojson : Yojson.Safe.t -> post Ppx_deriving_yojson_runtime.error_orval pp_step : step Fmt.ttype t = | Choice of t * t| ConsumeStep of step * t| LabelStep of label * tLabels provide additional existentials to be bound manually by the user
*)| Finished of post optionThe optional assertion corresponds to some post-condition that may be produced after successfuly matching. For example, a matching plan corresponding to a set of specifications will contain leaves that are respectively anntated with the corresponding post.
*)val to_yojson : t -> Yojson.Safe.tval of_yojson : Yojson.Safe.t -> t Ppx_deriving_yojson_runtime.error_ortype spec = Gillian.Gil_syntax.Spec.t with_mptype lemma = Gillian.Gil_syntax.Lemma.t with_mptype 'annot prog = {preds : (string, pred) Utils.Prelude.Hashtbl.t;specs : (string, spec) Utils.Prelude.Hashtbl.t;lemmas : (string, lemma) Utils.Prelude.Hashtbl.t;coverage : (string * int, int) Utils.Prelude.Hashtbl.t;prog : ('annot, int) Gillian.Gil_syntax.Prog.t;}type preds_tbl_t = (string, pred) Utils.Prelude.Hashtbl.ttype err_ = | MPSpec of string * Gillian.Gil_syntax.Asrt.t list| MPPred of string * Gillian.Gil_syntax.Asrt.t list| MPLemma of string * Gillian.Gil_syntax.Asrt.t list| MPAssert of Gillian.Gil_syntax.Asrt.t * Gillian.Gil_syntax.Asrt.t list| MPInvariant of Gillian.Gil_syntax.Asrt.t * Gillian.Gil_syntax.Asrt.t listval pp_err_ :
Ppx_deriving_runtime.Format.formatter ->
err_ ->
Ppx_deriving_runtime.unitval show_err_ : err_ -> Ppx_deriving_runtime.stringtype err = err_ Gillian.Utils.Location.locatedval pp_err :
Ppx_deriving_runtime.Format.formatter ->
err ->
Ppx_deriving_runtime.unitval show_err : err -> Ppx_deriving_runtime.stringmodule KB = Gillian.Gil_syntax.Expr.Setval learn_expr :
?top_level:bool ->
KB.t ->
Gillian.Gil_syntax.Expr.t ->
Gillian.Gil_syntax.Expr.t ->
outsval ins_outs_expr :
KB.t ->
Gillian.Gil_syntax.Expr.t ->
Gillian.Gil_syntax.Expr.t ->
(KB.t * outs) listval simplify_asrts :
?sorted:bool ->
Gillian.Gil_syntax.Asrt.t ->
Gillian.Gil_syntax.Asrt.tval s_init_atoms :
preds:(string, int list) Utils.Prelude.Hashtbl.t ->
KB.t ->
Gillian.Gil_syntax.Asrt.t ->
(step list, Gillian.Gil_syntax.Asrt.t) Stdlib.resultval init :
?use_params:bool ->
KB.t ->
KB.t ->
(string, int list) Utils.Prelude.Hashtbl.t ->
(Gillian.Gil_syntax.Asrt.t
* ((string * Utils.Containers.SS.t) option
* (Gillian.Gil_syntax.Flag.t * Gillian.Gil_syntax.Asrt.t list) option))
list ->
(t, Gillian.Gil_syntax.Asrt.t list) Stdlib.resultval init_prog :
?preds_tbl:(string, pred) Utils.Prelude.Hashtbl.t ->
('a, int) Gillian.Gil_syntax.Prog.t ->
'a progval init_preds :
(string, Gillian.Gil_syntax.Pred.t) Utils.Prelude.Hashtbl.t ->
((string, pred) Utils.Prelude.Hashtbl.t, err) Stdlib.resultval pp : Stdlib.Format.formatter -> t -> unitval get_pred_def : preds_tbl_t -> string -> predval init_pred_defs : unit -> preds_tbl_tval pp_pred_defs : Stdlib.Format.formatter -> preds_tbl_t -> unitval get_procs : 'a prog -> ('a, int) Gillian.Gil_syntax.Proc.t listval get_bispecs : 'a prog -> Gillian.Gil_syntax.BiSpec.t listval pp_asrt :
?preds_printer:
(Stdlib.Format.formatter ->
(string * Gillian.Gil_syntax.Expr.t list) ->
unit) ->
preds:preds_tbl_t ->
Stdlib.Format.formatter ->
Gillian.Gil_syntax.Asrt.t ->
unitval pp_spec :
?preds_printer:
(Stdlib.Format.formatter ->
(string * Gillian.Gil_syntax.Expr.t list) ->
unit) ->
preds:preds_tbl_t ->
Stdlib.Format.formatter ->
Gillian.Gil_syntax.Spec.t ->
unitval pp_normal_spec :
?preds_printer:
(Stdlib.Format.formatter ->
(string * Gillian.Gil_syntax.Expr.t list) ->
unit) ->
preds:preds_tbl_t ->
Stdlib.Format.formatter ->
Gillian.Gil_syntax.Spec.t ->
unitval add_spec : 'a prog -> Gillian.Gil_syntax.Spec.t -> unitval remove_spec : 'a prog -> string -> unitval update_coverage : 'a prog -> string -> int -> unitval first_time_running : 'a prog -> string -> int -> bool