S.SAInterpreter
module Call_stack : Gillian.General.Call_stack.S
type vt = Gillian.Symbolic.Values.t
Value type
type st = Gillian.Symbolic.Subst.t
Subst type
type store_t = SStore.t
type state_t = state
type state_err_t = SPState.err_t
val pp_state_err_t :
Ppx_deriving_runtime.Format.formatter ->
state_err_t ->
Ppx_deriving_runtime.unit
val show_state_err_t : state_err_t -> Ppx_deriving_runtime.string
val state_vt_to_yojson : state_vt -> Yojson.Safe.t
val state_vt_of_yojson :
Yojson.Safe.t ->
state_vt Ppx_deriving_yojson_runtime.error_or
val pp_state_vt :
Ppx_deriving_runtime.Format.formatter ->
state_vt ->
Ppx_deriving_runtime.unit
val show_state_vt : state_vt -> Ppx_deriving_runtime.string
type heap_t = heap_t
type annot = annot
Command annotation; language-dependent
module Val : Gillian.General.Val.S with type t = vt
type invariant_frames = (string * state_t) list
type err_t = (vt, state_err_t) Gillian.General.Exec_err.t
val pp_err_t :
Ppx_deriving_runtime.Format.formatter ->
err_t ->
Ppx_deriving_runtime.unit
val show_err_t : err_t -> Ppx_deriving_runtime.string
val err_t_to_yojson : err_t -> Yojson.Safe.t
val err_t_of_yojson :
Yojson.Safe.t ->
err_t Ppx_deriving_yojson_runtime.error_or
module CConf : sig ... end
Type of configurations: state, call stack, previous index, previous loop ids, current index, branching
type result_t = (state_t, state_vt, err_t) Exec_res.t
The result of execution
In the symbolic case, this is the result of one branch of execution
type conf_selector =
| Path of Gillian.Gil_syntax.Branch_case.path
| IdCase of Gillian.Logging.Report_id.t * Gillian.Gil_syntax.Branch_case.t option
type 'result cont_func_f = ?selector:conf_selector -> unit -> 'result cont_func
To support the step-by-step behaviour of the debugger, execution is split into thunks; each invocation executes one GIL command. By supplying a branch path, or an ID and branch case, a particular branch of execution can be selected.
and 'result cont_func =
| Finished of 'result list
| Continue of {
report_id : Gillian.Logging.Report_id.t option;
branch_path : Gillian.Gil_syntax.Branch_case.path;
new_branch_cases : Gillian.Gil_syntax.Branch_case.t list;
cont_func : 'result cont_func_f;
}
| EndOfBranch of 'result * 'result cont_func_f
module Logging : sig ... end
Types and functions for logging to the database
val call_graph : Gillian.Utils.Call_graph.t
val evaluate_lcmds :
annot MP.prog ->
Gillian.Gil_syntax.LCmd.t list ->
?annot:annot option ->
state_t ->
(state_t, state_err_t) Res_list.t
Evaluates a list of logical commands, in the context of a given state
val init_evaluate_proc :
(result_t -> 'a) ->
annot MP.prog ->
string ->
string list ->
state_t ->
'a cont_func
Begins execution of a proc, given parameters and initial state
val evaluate_proc :
(result_t -> 'a) ->
annot MP.prog ->
string ->
string list ->
state_t ->
'a list
As with init_evaluate_proc
, but immediately executes the proc to completion