Module Gil_syntax.Cmd
type logic_bindings_t = string * (string * Expr.t) listOptional bindings for procedure calls
type function_call = {var_name : string;fun_name : Expr.t;args : Expr.t list;bindings : logic_bindings_t option;
}type 'label t = | Skip(*Skip
*)| Assignment of string * Expr.t(*Variable Assignment
*)| LAction of string * string * Expr.t list(*Action
*)| Logic of LCmd.t(*Logic commands
*)| Goto of 'label(*Unconditional goto
*)| GuardedGoto of Expr.t * 'label * 'label(*Conditional goto
*)| Call of function_call * 'label option(*Procedure call
*)| Par of function_call list(*Parallel composition
*)| ECall of string * Expr.t * Expr.t list * 'label option(*External Procedure call
*)| Apply of string * Expr.t * 'label option(*Application-style procedure call
*)| Arguments of string(*Arguments of the currently executing function
*)| PhiAssignment of (string * Expr.t list) list(*PHI-assignment
*)| ReturnNormal(*Normal return
*)| ReturnError(*Error return
*)| Fail of string * Expr.t list(*Failure
*)
val to_yojson : ('label -> Yojson.Safe.t) -> 'label t -> Yojson.Safe.tval of_yojson :
(Yojson.Safe.t -> 'label Ppx_deriving_yojson_runtime.error_or) ->
Yojson.Safe.t ->
'label t Ppx_deriving_yojson_runtime.error_orval pp : pp_label:'a Fmt.t -> Stdlib.Format.formatter -> 'a t -> unitPretty-printer
val pp_labeled : Stdlib.Format.formatter -> string t -> unitPretty-printer for labelled programs
val pp_indexed : Stdlib.Format.formatter -> int t -> unitPretty-printer for integer-indexed programs
val successors : int t -> int -> int listPossible successors of an command (in integer indexing)
val pvars : 'a t -> Utils.Containers.SS.tProgram variable collector
val lvars : 'a t -> Utils.Containers.SS.tLogical variable collector
val locs : 'a t -> Utils.Containers.SS.tLocation collector
val call :
?bindings:logic_bindings_t ->
?error:'label ->
string ->
Expr.t ->
Expr.t list ->
'label t