interp_sl
Ctx.Make
builtin
dangling
dynamic
dynamic_al
dynamic_pl
dynamic_runner
dynamic_sl
error_runtime
inst
instr
interp_al
interp_common
interp_pl
p4
p4spectec.backend_boot
p4spectec.backend_sim
p4spectec.backend_splice
p4spectec.backend_testgen_neg
p4spectec.cache
p4spectec.coverage
p4spectec.domain
p4spectec.frontend
p4spectec.interface
p4spectec.interp
p4spectec.lang
p4spectec.pass
p4spectec.runner
p4spectec.runtime
p4spectec.stf
p4spectec.util
prose
sim
spectec
static
testgen_neg
type
value
type cursor =
| Global
| Local
val is_det : bool Stdlib.ref
type global = {
tdtbl : Runtime.Dynamic_Sl.Envs.TDTbl.t;
rtbl : Runtime.Dynamic_Sl.Envs.RTbl.t;
ftbl : Runtime.Dynamic_Sl.Envs.FTbl.t;
}
type local =
| Empty
| Rel of {
rid : Domain.Lib.RId.t;
values_input : Lang.Sl.value list;
venv : Runtime.Dynamic_Sl.Envs.VEnv.t;
| Func of {
fid : Domain.Lib.FId.t;
tdenv : Runtime.Dynamic_Sl.Envs.TDEnv.t;
fenv : Runtime.Dynamic_Sl.Envs.FEnv.t;
type t = {
global : global;
local : local;
val global : global
val add_typdef_global : Domain.Lib.TId.t -> Typdef.t -> unit
val add_rel_global : Domain.Lib.RId.t -> Runtime.Dynamic_Sl.Rel.t -> unit
val add_func_global : Domain.Lib.FId.t -> Runtime.Dynamic_Sl.Func.t -> unit
val load_def : Lang.Sl.def -> unit
val init : det:bool -> Lang.Sl.spec -> unit
val empty : unit -> t
val find_values_input_opt : t -> Value.t list option
val find_values_input : t -> Value.t list
val find_value_opt : t -> Runtime.Dynamic_Sl.Var.t -> Value.t option
val find_value : t -> Runtime.Dynamic_Sl.Var.t -> Value.t
val bound_value : t -> Runtime.Dynamic_Sl.Var.t -> bool
val find_typdef_opt : t -> Domain.Lib.TId.t -> Typdef.t option
val find_typdef : t -> Domain.Lib.TId.t -> Typdef.t
val find_defined_typdef : t -> Domain.Lib.TId.t -> Lang.Sl.tparam list * Lang.Sl.deftyp
val bound_typdef : t -> Domain.Lib.TId.t -> bool
val find_rel_opt : t -> Domain.Lib.RId.t -> Runtime.Dynamic_Sl.Rel.t option
val find_rel : t -> Domain.Lib.RId.t -> Runtime.Dynamic_Sl.Rel.t
val find_rel_signature_opt : t -> Domain.Lib.RId.t -> (Lang.Sl.nottyp * Lang.Hints.Input.t) option
val find_rel_signature : t -> Domain.Lib.RId.t -> Lang.Sl.nottyp * Lang.Hints.Input.t
val bound_rel : t -> Domain.Lib.RId.t -> bool
val find_func_opt : t -> Domain.Lib.FId.t -> (cursor * Runtime.Dynamic_Sl.Func.t) option
val find_func : t -> Domain.Lib.FId.t -> cursor * Runtime.Dynamic_Sl.Func.t
val find_func_signature_opt : t -> Domain.Lib.FId.t -> (Lang.Sl.tparam list * Lang.Sl.typ list * Lang.Sl.typ) option
val find_func_signature : t -> Domain.Lib.FId.t -> Lang.Sl.tparam list * Lang.Sl.typ list * Lang.Sl.typ
val bound_func : t -> Domain.Lib.FId.t -> bool
val add_value : t -> Runtime.Dynamic_Sl.Var.t -> Value.t -> t
val add_typdef : t -> Domain.Lib.TId.t -> Typdef.t -> t
val add_func : t -> Domain.Lib.FId.t -> Runtime.Dynamic_Sl.Func.t -> t
val localize : t -> t
val localize_rule : t -> Domain.Lib.RId.t -> Lang.Sl.value list -> t
val localize_func : t -> Domain.Lib.FId.t -> Lang.Sl.value list -> Runtime.Dynamic_Sl.Envs.TDEnv.t -> t
val localize_clear : t -> t
val transpose : Lang.Sl.value list list -> Lang.Sl.value list list
val sub_opt : t -> Lang.Sl.var list -> t option
val sub_list : t -> Lang.Sl.var list -> t list