structured language that makes it easy to write small test programs in OCaml

`type assertion``= string```
`type label``= int```
`type structured_instr````=`

`|` `Cmd of InferIR.Sil.instr`
`|` `If of InferIR.Exp.t * structured_instr list * structured_instr list`
`|` `While of InferIR.Exp.t * structured_instr list` | (** try/catch/finally. note: there is no throw. the semantics are that every command in the try block is assumed to be possibly-excepting, and the catch block captures all exceptions *)
`|` `Try of structured_instr list * structured_instr list * structured_instr list`
`|` `Invariant of assertion * label` | (** gets autotranslated into assertions about abstract state *)

``
`val pp_structured_instr : InferIR.Sil.F.formatter ‑> structured_instr ‑> unit`
`val pp_structured_instr_list : F.formatter ‑> structured_instr list ‑> unit`
`val pp_structured_program : F.formatter ‑> structured_instr list ‑> unit`
`val dummy_typ : InferIR.Typ.t`
`val dummy_loc : InferBase.Location.t`
`val dummy_procname : InferIR.Typ.Procname.t`
`val label_counter : int InferStdlib.IStd.ref`
`val fresh_label : unit ‑> int`
`val invariant : assertion ‑> structured_instr`
`val pvar_of_str : string ‑> InferIR.Pvar.t`
`val var_of_str : string ‑> InferIR.Exp.t`
`val ident_of_str : string ‑> InferIR.Ident.t`
`val unknown_exp : InferIR.Exp.t`
`val make_load : rhs_typ:InferIR.Typ.t ‑> InferIR.Ident.t ‑> InferIR.Exp.t ‑> structured_instr`
`val make_set : rhs_typ:InferIR.Typ.t ‑> lhs_exp:InferIR.Exp.t ‑> rhs_exp:InferIR.Exp.t ‑> structured_instr`
`val make_call : ?⁠procname:InferIR.Typ.Procname.t ‑> ?⁠return:(InferIR.Ident.t * InferIR.Typ.t) ‑> (InferIR.Exp.t * InferIR.Typ.t) list ‑> structured_instr`
`val make_store : rhs_typ:InferIR.Typ.t ‑> InferIR.Exp.t ‑> string ‑> rhs_exp:InferIR.Exp.t ‑> structured_instr`
`val make_load_fld : rhs_typ:InferIR.Typ.t ‑> string ‑> string ‑> InferIR.Exp.t ‑> structured_instr`
`val id_assign_exp : ?⁠rhs_typ:InferIR.Typ.t ‑> string ‑> InferIR.Exp.t ‑> structured_instr`
`val id_assign_id : ?⁠rhs_typ:InferIR.Typ.t ‑> string ‑> string ‑> structured_instr`
`val id_assign_var : ?⁠rhs_typ:InferIR.Typ.t ‑> string ‑> string ‑> structured_instr`
`val id_set_id : ?⁠rhs_typ:InferIR.Typ.t ‑> string ‑> string ‑> structured_instr`
`val var_assign_exp : rhs_typ:InferIR.Typ.t ‑> string ‑> InferIR.Exp.t ‑> structured_instr`
`val var_assign_int : string ‑> int ‑> structured_instr`
`val var_assign_id : ?⁠rhs_typ:InferIR.Typ.t ‑> string ‑> string ‑> structured_instr`
`val var_assign_addrof_var : ?⁠rhs_typ:InferIR.Typ.t ‑> string ‑> string ‑> structured_instr`
`val call_unknown : ?⁠return:(string * InferIR.Typ.t) ‑> string InferStdlib.IStd.List.t ‑> structured_instr`